Custom Hook
概念的には、普通に処理を関数にしてまとめるぐらいのカジュアルなものだと思えばいいと思う
別に共通化したい処理じゃなくても、長くなってきたからまとめるぐらいの気持ちで使えばいい
普通の関数との違いは
名前をuseから始めること
conventionだけどね
大抵の場合、中で他のhookを呼ぶこと
ゆえにpure functionではない(stateやside effectがある)し、テストを書こうと思ったらcomponentをrenderする事になる
ただし、hookの呼び出しごとにstateは完全にisolatedであり、共有はされていない
内部的にはuseStateとかuseEffectとかを複数回呼んでいるのと同じ